package de.nenov.tutorials.designpatterns.observer;

import org.apache.log4j.Logger;

/** 
 *  Dieser Display implementiert Observer ,  
 *  damit man Änderungen von WeatherData-Objekt erhält. 
 *  
 *  Man implementiert ausserdem DisplayElement,  
 *  weil unsere API verlangen wird, 
 *  dass alle Anzeigeelemente (DisplayElements) dieses Interface implementieren. 
 */ 
public class CurrentConditionsDisplay implements IObserver, IDisplayElement{
	
	private static Logger logger = Logger.getLogger(CurrentConditionsDisplay.class);
	
    private float tempetature;  
    private float humidity;   
    private ISubject weatherData;  
      
      
    /** 
     * Dem Konstruktor wird das wetter-Daten-Objekt übergeben, 
     * und wir können es verwenden,  
     * um die Anzeige als Observer zu registrieren.  
     * 
     * @param weatherData  
     */  
    public CurrentConditionsDisplay(ISubject weatherData){  
        this.weatherData = weatherData;  
        weatherData.registerObserver(this);  
    }  
                           
    @Override  
    public void update(float tempetature, float humidity, float pressure) {  
        this.tempetature = tempetature;  
        this.humidity = humidity;  
        display();        
    }  
  
    @Override  
    public void display() {  
        logger.info("Aktuelle Wetterbedingungen: " + tempetature +
        		"Grad C und " + humidity + "% Luftfeuchtigkeit");            
    } 
}
